Skip to main content

General Requirements

There is no better way to get a feel for the Rover framework and its concepts than to write a service yourself. We've created several guides and quick-start tools to get you up and running quickly (and we continue to expand this to other languages as well) but there are some general remarks to keep in mind.

Elias Groot

Elias Groot

Software Lead, Course Organizer

The Service Boot Process and the roverlib

When roverd starts up a service, it will inject a special JSON configuration - we call this a bootspec - in the ASE_SERVICE environment variable for that service process. This JSON variable serves as the "phone book" of the given service: it describes where it can find other services, how to connect to them and what options are available. You can parse this JSON configuration yourself, but for many popular languages, we have created the roverlib: a library that (among others) parses the configuration and exposes useful methods for data reading, writing and serialization. You will need to pick a roverlib flavor for your language of choice.

JSON spec

If no roverlib is available for your language (yet), you can implement its functionality yourself by parsing the JSON according to our spec, which is defined here.

You will see that among roverlib flavors, the functionality and source code are structured identically. This should make it easy for you to switch between different languages and roverlibs.

Service Syncing Workflow

We suggest you develop your service on your own machine (your laptop) so that you have a safe base for file storage and git operations. When the Rover is powered on, you can run roverctl service sync in your service's root directory. This will version and upload your service files to the Rover and make it available to enable when running roverctl pipeline and entering configuration mode.

You can leave roverctl service sync running in the background, as it will watch filesystem changes and upload the changed files automatically.